home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac 1993 September / clonecd / September 93.img / Archives / Fun, Tricks & Hacks / Windows / MSWindows.h < prev    next >
C/C++ Source or Header  |  1992-06-14  |  7KB  |  276 lines

  1. #include <Types.h>
  2. #include <Resources.h>
  3. #include <Quickdraw.h>
  4. #include <QDOffscreen.h>
  5. #include <Palette.h>
  6. #include <Fonts.h>
  7. #include <Events.h>
  8. #include <Windows.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Dialogs.h>
  12. #include <Desk.h>
  13. #include <ToolUtils.h>
  14. #include <Memory.h>
  15. #include <SegLoad.h>
  16. #include <Files.h>
  17. #include <OSUtils.h>
  18. #include <OSEvents.h>
  19. #include <DiskInit.h>
  20. #include <Packages.h>
  21. #include <Traps.h>
  22. #include "Resource.h"
  23.  
  24. /* Define HiWrd and LoWrd macros for efficiency. */
  25. #define HiWrd(aLong)    (((aLong) >> 16) & 0xFFFF)
  26. #define LoWrd(aLong)    ((aLong) & 0xFFFF)
  27.  
  28. /* Define TopLeft and BotRight macros for convenience. Notice the implicit
  29.    dependency on the ordering of fields within a Rect */
  30. #define TopLeft(aRect)    (* (Point *) &(aRect).top)
  31. #define BotRight(aRect)    (* (Point *) &(aRect).bottom)
  32.  
  33.  
  34. #define kMaxMasters    8        // MoreMasters() Blocks
  35.  
  36. struct MSIconRecord {
  37.     struct MSIconRecord *next;
  38.     struct MSChildRecord *group;
  39.     struct MSChildRecord *restore;
  40.     struct MSWindowRecord *app;
  41.     short        id;
  42.     short        selected;
  43.     short        action;
  44.     Rect        iconBox;
  45.     Rect        textBox;
  46. };
  47. typedef struct MSIconRecord MSIconRecord;
  48. typedef MSIconRecord *MSIconPtr;
  49.  
  50. struct MSMenuRecord {
  51.     struct MSMenuRecord *next;
  52.     MenuHandle    menu;
  53.     Rect        box;
  54.     Str31        text;
  55. };
  56. typedef struct MSMenuRecord MSMenuRecord;
  57. typedef MSMenuRecord *MSMenuPtr;
  58.  
  59. struct MSChildRecord {
  60.     struct MSChildRecord *next;
  61.     struct MSWindowRecord *window;
  62.     MSMenuPtr    menu;
  63.     MSIconPtr    icon;
  64.     MSIconPtr    iconList;
  65.     Rect        portRect;
  66.     Point        origin;
  67.     Rect        restoreRect;
  68.     Point        restoreOrigin;
  69.     short        active;
  70.     short        minmax;
  71.     short        maximized;
  72.     short        growBorder;
  73.     Rect        controlMenuRect;
  74.     Rect        menuBarRect;
  75.     Rect         controlMenuBox;
  76.     Rect         maximizeBox;
  77.     Rect        minimizeBox;
  78.     Str31        title;
  79. };
  80. typedef struct MSChildRecord MSChildRecord;
  81. typedef MSChildRecord *MSChildPtr;
  82.  
  83. struct MSWindowRecord {
  84.     WindowRecord window;
  85.     MSChildPtr    child;
  86.     MSIconPtr    icon;
  87. };
  88. typedef struct MSWindowRecord MSWindowRecord;
  89. typedef MSWindowRecord *MSWindowPtr;
  90.  
  91. #define MSWindow    ((MSWindowPtr)window)
  92.  
  93. /* Constants */
  94.  
  95. #define kOffscreenOffset    0x4000
  96.  
  97. #define kNoMinMax            0
  98. #define kMinMax                1
  99.  
  100. #define vWHITE                0x0FFFF
  101. #define vLTGRAY                0x0C000
  102. #define vGRAY                0x08000
  103. #define vDKGRAY                0x04000
  104. #define vBLACK                0x00000
  105.  
  106. //    Minesweeper Picts
  107. #define kButtonPict                128        // Unpressed button
  108. #define kEmptyPict                129        // Pressed button
  109. #define kNumPict                140        // Microsoft numbers
  110. #define kNum2Pict                130        // More numbers
  111. #define kFlagPict                150        // Flagged mine
  112. #define kBombPict                151        // Unexploded mine
  113. #define kBoomPict                152        // The hit mine
  114. #define kBadPict                153        // Wrong flag guess
  115. #define kMarkPict                154        // Unknown flag
  116. #define kLCDPict                160        // LCD numbers
  117. #define kHappyFace                170        // Smile face
  118. #define kPressedFace            171        // Smile face, pressed
  119. #define kOwFace                    172        // Smile face, owww 
  120. #define kSadFace                173        // Sad face
  121.  
  122. //    Windows Application Icons
  123. #define    kProgramManager            300        // windows icon ??
  124.  
  125. #define    kMain                    300
  126. #define    kControlPanel            201
  127. #define    kFileManager            202
  128. #define    kDosPrompt                203
  129. #define    kClipboard                204
  130. #define    kPrintManager            205
  131.  
  132. #define    kAccessories            301
  133. #define    kNotepad                210
  134. #define    kCalendar                211
  135. #define    kPaintbrush                212
  136. #define    kCalculator                213
  137. #define    kCardfile                214
  138. #define    kClock                    215
  139.  
  140. #define    kGames                    302
  141. #define kMinesweeper            241
  142. #define kSolitare                242
  143. #define kReversi                243
  144.  
  145. #define    kApplications            303
  146. #define    kTerminal                216
  147.  
  148. #define    kCautionIcon            250
  149. #define    kErrorIcon                251
  150. #define    kInfoIcon                252
  151.  
  152. #define kOKButton                259        // OK button
  153.  
  154. //    Windows Cursors
  155. #define    kHoriCursor                128
  156. #define    kVertCursor                129
  157. #define    kDRightCursor            130
  158. #define    kURightCursor            131
  159. #define    kArrowCursor            132
  160. #define    kMoveCursor                133
  161.  
  162. #define kMaxPict                400
  163.  
  164. //    Window actions
  165. #define vMaximize        1
  166. #define vMinimize        2
  167. #define vRestore        3
  168.  
  169. //    Window definition
  170. #define kGrowBorder        4
  171. #define kIconSize        32
  172. #define kIconLineHeight    12
  173. #define kIconHdr        12
  174. #define kIconStepH        100
  175. #define kIconStepV        60
  176. #define kIconXOffset (kGrowBorder + (kIconStepH - kIconSize) / 2)
  177.  
  178. #define kOKBoxW            64
  179. #define kOKBoxH            32
  180.  
  181. //    Window Icons
  182. #define kMenuHeight                19
  183. #define kPictHeight        (kMenuHeight + kGrowBorder)
  184. #define kPictWidth                22
  185. #define kPictWidth2                18
  186. #define    kMenuBox                220
  187. #define    kMaximizeBox            221
  188. #define    kMinimizeBox            222
  189. #define    kRestoreBox                225
  190. #define kNoBox                    223
  191. #define    kPressOffset            10
  192. #define    kInactiveOffset            100
  193. #define    kTop                    224
  194. #define    kBottomLeft                226
  195. #define    kBottomRight            227
  196.  
  197. //    Game window border definition
  198. #define kBox            16
  199. #define kBorderTop    (kPictHeight + kMenuHeight + 1)
  200. #define kBorder1        3
  201. #define kBorder2        6
  202. #define kBorder3        3
  203. #define kBorder        (kBorder1 + kBorder2 + kBorder3)
  204. #define kBorder3h    (kBorder3 - 1)
  205. #define kBorderLCD        4
  206. #define kHeightLCD        32
  207. #define kWidthLCD        18
  208. #define kInsetLCD    ((kBorder - 1) + kBorderLCD)
  209. #define kHdrSize    (kBorderTop + kInsetLCD + kHeightLCD + kBorderLCD + kBorder3h + kBorder2 + kBorder3)
  210.  
  211. //    Game table values
  212. #define minefield(r,c)     pMineField[(r) * cols + (c)]
  213. #define mineview(r,c)     pMineView[(r) * cols + (c)]
  214. #define    kNumMask        0x0F
  215. #define    kMine            0x10
  216. #define    kFlag            0x20
  217. #define    kNoFlag            0x40
  218.  
  219. /* Prototypes */
  220.  
  221. //    Application routines called from the shell
  222. Boolean InitializeApp(void);
  223. void InstallMenus(WindowPtr window);
  224. void SetUpMenus(void);
  225. void DoMenuCommand(MSChildPtr MSChild,MenuHandle hMenu,long mResult);
  226. Boolean PtInGame(Point where);
  227. Boolean ContentClick(EventRecord *event,WindowPtr window);
  228. void DrawPict(short id,short *x,short *y);
  229. void DrawCell(short id,Rect *box);
  230. void DrawIcon(MSIconPtr icon,short active);
  231. void DrawWindow(WindowPtr window);
  232. void GameTime(void);
  233. void GetDragRect(WindowPtr window,Rect *dragRect);
  234. Boolean DragChild(WindowPtr window,Point where);
  235.  
  236. //    Shell routines called from the application
  237. Boolean IsAppWindow( WindowPtr window );
  238. Boolean IsDAWindow( WindowPtr window );
  239. void CountClicks(EventRecord *macEvent);
  240. MSChildPtr GetFirstChild(MSWindowPtr window);
  241. void BringChildFront(WindowPtr window,Point where,Boolean doUpdate);
  242. void SetCursorRgns();
  243. void SizeMSWindow(MSChildPtr MSChild);
  244. Boolean DoCloseWindow( WindowPtr window );
  245. void Terminate(void);
  246.  
  247. //    Application routines called within the application
  248. void Initialize(void);
  249. void EventLoop(void);
  250. void CreateGWorld(Rect *bounds);
  251. void DrawGame(BitMap *pixMap);
  252. void SaveBits(WindowPtr window);
  253. void DrawMSWindow(WindowPtr    window);
  254. void DrawAlertWindow(WindowPtr    window);
  255. void DrawMineWindow(WindowPtr window);
  256. void NewGame(Boolean resize);
  257. unsigned char minechar(short r,short c);
  258. void InitGame(short rx,short cx);
  259. void DrawFrame(void);
  260. void DrawHdr(void);
  261. void DrawMap(void);
  262. void DrawNewMap(BitMap *pixMap);
  263. void DrawCell(short id,Rect *box);
  264. void ClickCell(Point where,short modifiers);
  265. void ClickGame(Point where,short modifiers);
  266. void ShowDialog(short dialogID);
  267.  
  268. //void DoCommand(long int mResult);
  269. void DoMSCommand(MSChildPtr MSChild,short command);
  270. void DoControlMenu(MSChildPtr MSChild,Point where);
  271. void DoMenuBar(MSChildPtr MSChild,Point where);
  272. void DoubleClickIcon(MSChildPtr MSChild,MSIconPtr icon);
  273.  
  274. void    PositionWindow( WindowPtr w );
  275. Point    CenterWithin( Rect *r, Rect *within );
  276.